/*
 * 1.00 2012/10/13
 *
 * Copyright (c) 2012 Motch_bs
 * All rights reserved.
 *
 * このソフトウェアは，Motch_bsに所有される機密情報である。
 * これらの機密情報を漏洩してはならず，Motch_bs の意図する
 * 認可の元においてこれを使用すべし。
 */
package jp.co.ufp.voicetch.base.util;

import java.io.File;

import jp.co.ufp.voicetch.base.audio.Player;
import jp.co.ufp.voicetch.base.audio.Recorder;
import android.os.Environment;

/**
 * @author Motch_bs
 * 
 */
public class AudioControler {

    /** 録音ファイル名 */
    public static final String RECORD_FILENAME = "/voicetch.pcm";

    /** 録音ファイル名(ピッチシフト変換) */
    public static final String RECORD_PITCHSHIFT_FILENAME = "/voicetch_ps.pcm";

    /** 変換後ファイル名 */
    public static final String CONVERT_FILENAME = "/voicetch.wav";

    /** 録音 */
    public Recorder recorder;

    /** 保存ファイル */
    private File recordFile;

    /** 保存ファイル */
    private File recordFilePitchShift;

    /** 変換後保存ファイル */
    private File convertFile;

    /**
     * 録音停止
     * 
     * @param isRecording
     */
    public void setRecording(
	boolean isRecording) {
	recorder.isRecording = isRecording;
    }

    /**
     * @param effectVoice
     */
    public AudioControler() {
	super();
	// 保存ファイル
	recordFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + RECORD_FILENAME);
	convertFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + CONVERT_FILENAME);
	recordFilePitchShift = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + RECORD_PITCHSHIFT_FILENAME);
	// レコーダーを生成
	recorder = new Recorder(recordFile);
	recorder.setWavFile(convertFile);
	recorder.setFilePitchShift(recordFilePitchShift);
    }

    /**
     * 録音する
     */
    public void record() {
	recorder.record();
	// WAVへ変換する
	recorder.convertWavFile();
    }

    /**
     * 再生
     */
    public void play(
	int frequency) {
	play(frequency, Player.MODE_NORMAL);
    }

    /**
     * 再生
     */
    public void play(
	int frequency, int mode) {
	Player player = new Player(recordFile);
	player.setFrequency(frequency);
	player.play(mode);
    }

    /**
     * 再生
     */
    public void playWav(
	int frequency) {
	Player player = new Player(convertFile);
	player.setFrequency(frequency);
	player.play(Player.MODE_WAV);
    }
}
